package 算法.LeetCode91.每日打卡题目;

import java.util.ArrayDeque;
import java.util.Queue;

/**
 * @author:谢君臣
 * @Date:2021/3/1721:16
 * @version:1.0
 * @function:
 * 给你字符串 s 和整数 k 。
 *
 * 请返回字符串 s 中长度为 k 的单个子字符串中可能包含的最大元音字母数。
 *
 * 英文中的 元音字母 为（a, e, i, o, u）。
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/maximum-number-of-vowels-in-a-substring-of-given-length
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class day35 {
    public static void main(String[] args) {
        System.out.println(maxVowels("abciiidef", 5));
    }
    public static int maxVowels(String s, int k) {
        int max = 0;
        char [] chars = s.toCharArray();
        Queue<Integer> queue = new ArrayDeque<>();
        int l = -k+1;
        for (int i = 0; i < s.length(); i++) {
            while (!queue.isEmpty()&&queue.peek()<l)
                queue.poll();
            if (isVowel(chars[i]))
                queue.add(i);
            l++;
            if (l>=0)
                max = Math.max(max,queue.size());
        }
        return max;
    }
    private static boolean isVowel(char ch) {
        return ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u';
    }
}
